package com.jt.aop;

import com.fasterxml.jackson.databind.util.JSONPObject;
import com.jt.vo.SysResult;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletRequest;

@RestControllerAdvice   //作用：表示我是一个通知方法，并且拦截controller层的异常，并返回json
public class SysResultException {
    //需要定义一个全局方法，返回指定报错信息
    //ExceptionHandler配置异常的类型，当遇到某种异常时在执行该方法
    //利用request对象动态获取callback参数，之后动态封装返回值
    @ExceptionHandler({RuntimeException.class})
    public Object excption(Exception e,HttpServletRequest request) {
        e.printStackTrace();//日志记录/控制台输出 让程序员知道哪里报错!!
        String callback = request.getParameter("callback");
        if (!StringUtils.isEmpty(callback)){//jsonp请求
            return new JSONPObject(callback,SysResult.fail());
        }
        return SysResult.fail();
    }

}
